Add testcases for opening display
authorMatthias Clasen <mclasen@redhat.com>
Tue, 18 Jan 2011 14:36:24 +0000 (09:36 -0500)
committerMatthias Clasen <mclasen@redhat.com>
Tue, 18 Jan 2011 14:36:24 +0000 (09:36 -0500)
More precisely, test that we can successfully fail to open
a display...

gdk/tests/Makefile.am
gdk/tests/display.c [new file with mode: 0644]

index 5930f4ca33e2a6bb8fcca145e3e9e95ee9e28a6a..5cadc6d35cea1e57aecc4e9037773aca967d16f6 100644 (file)
@@ -24,8 +24,12 @@ gdk_color_SOURCES  = gdk-color.c
 gdk_color_LDADD    = $(progs_ldadd)
 
 TEST_PROGS        += encoding
-encoding_SOURCES  = encoding.c
-encoding_LDADD    = $(progs_ldadd)
+encoding_SOURCES   = encoding.c
+encoding_LDADD     = $(progs_ldadd)
+
+TEST_PROGS        += display
+display_SOURCES    = display.c
+display_LDADD      = $(progs_ldadd)
 
 CLEANFILES = \
        cairosurface.png        \
diff --git a/gdk/tests/display.c b/gdk/tests/display.c
new file mode 100644 (file)
index 0000000..79fbcfd
--- /dev/null
@@ -0,0 +1,74 @@
+#include <stdlib.h>
+
+#include <gdk/gdk.h>
+
+static void
+test_unset_display (void)
+{
+  if (g_test_trap_fork (0, G_TEST_TRAP_SILENCE_STDOUT | G_TEST_TRAP_SILENCE_STDERR))
+    {
+      GdkDisplayManager *manager;
+
+      g_unsetenv ("DISPLAY");
+
+      g_assert (!gdk_init_check (NULL, NULL));
+      manager = gdk_display_manager_get ();
+      g_assert (manager != NULL);
+      g_assert (gdk_display_manager_get_default_display (manager) == NULL);
+
+      exit (0);
+    }
+  g_test_trap_assert_passed ();
+
+  if (g_test_trap_fork (0, G_TEST_TRAP_SILENCE_STDOUT | G_TEST_TRAP_SILENCE_STDERR))
+    {
+      g_unsetenv ("DISPLAY");
+
+      gdk_init (NULL, NULL);
+
+      exit (0);
+    }
+  g_test_trap_assert_failed ();
+  g_test_trap_assert_stderr ("*cannot open display*");
+}
+
+static void
+test_bad_display (void)
+{
+  if (g_test_trap_fork (0, G_TEST_TRAP_SILENCE_STDOUT | G_TEST_TRAP_SILENCE_STDERR))
+    {
+      GdkDisplayManager *manager;
+
+      g_setenv ("DISPLAY", "poo", TRUE);
+
+      g_assert (!gdk_init_check (NULL, NULL));
+      manager = gdk_display_manager_get ();
+      g_assert (manager != NULL);
+      g_assert (gdk_display_manager_get_default_display (manager) == NULL);
+
+      exit (0);
+    }
+  g_test_trap_assert_passed ();
+
+  if (g_test_trap_fork (0, G_TEST_TRAP_SILENCE_STDOUT | G_TEST_TRAP_SILENCE_STDERR))
+    {
+      g_setenv ("DISPLAY", "poo", TRUE);
+
+      gdk_init (NULL, NULL);
+
+      exit (0);
+    }
+  g_test_trap_assert_failed ();
+  g_test_trap_assert_stderr ("*cannot open display*");
+}
+
+int
+main (int argc, char *argv[])
+{
+  g_test_init (&argc, &argv, NULL);
+
+  g_test_add_func ("/display/unset-display", test_unset_display);
+  g_test_add_func ("/display/bad-display", test_bad_display);
+
+  return g_test_run ();
+}